perm filename ARMFN[SYS,HE]6 blob sn#032855 filedate 1973-03-30 generic text, type T, neo UTF8
00100	HOPEN:				;OPENS THE HAND TO SET POINT
00200		TRNN HCL
00300		JRST[	MOVEI TAC,=480	;GO HERE FIRST TIME
00400			MOVEM TAC,HCNT	;MAX TIME TO SERVO THERE
00500			ADDI TAC,=60
00600			MOVEM TAC,COUNT
00700			HRLZ AC,@STKPTR	;REQUIRED OPENING
00800			MOVE MQ,[3.6]
00900			CAML AC,MQ
01000			MOVE AC,MQ	;NOT GREATER THAN 2.5
01100			MOVEM AC,RSET	;REQUIRED FINAL SET POINT
01200			PUSHJ P,HEAD	;READS THE HAND
01300			MOVE AC,HAND	;AND STORE IT HERE
01400			MOVEM AC,SET	;DYNAMIC SET POINT
01500			TRZ STCH	;TURN OFF TOUCH AND SAVE STATE
01600			MOVE TAC,[0.2]
01700			CAML AC,RSET
01800			MOVN TAC,TAC
01900			MOVEM TAC,DIR	;CHANGE OF SET POINT PER JIFFY
02000			TRO HCL		;SO THAT WE DON'T COME BACK HERE
02100			JUMPGE TAC,NXTJIF
02200			FSC TAC,-1	;IF CLOSING GO SLOWER
02300			MOVEM TAC,DIR
02400			SKIPE SOTCH	;AND RESTORE TOUCH
02500			TRO STCH
02600			JRST NXTJIF]
02700	HSU:	PUSHJ P, HEAD		;INCREMENTS SETPOINT AND SETS D/A
02800					;LEAVES ARM DATAO IN TAC
02900	IFE HANDWORK <
03000		JRST NEXT
03100	>
03200		SOSGE HCNT
03300		JRST[	MOVEI AC,HTERR
03400			MOVEM AC,TRAJER
03500			POP P,AC
03600			JRST TOFF]
03700		SKIPE DIR
03800		JRST DAW		;IF NOT AT FINAL SET DRIVE ANYWAY
03900		MOVE AC,RSET
04000		FSBR AC,HAND		;CHECK ERROR TOLERANCE
04100		MOVM AC,AC
04200		FSBR AC,[0.05]
04300		JUMPLE AC,[	TRZ HCL
04400				TDZ DATWD,HANDAT
04500				JRST NEXT]
04600	DAW:	
04700	IFN TRACK,<SKIPN WALK>
04800		DATAO ARM,DATWD		;DRIVE HAND
04900		JRST NXTJIF
05000	
     

00100	HCLOSE:
00200		TRNN HCL		;ONLY ONCE
00300		JRST[	TRZ STCH	;TURN OFF TOUCH AND SAVE STATE
00400			MOVEI TAC,=240
00500			MOVEM TAC,COUNT
00600			HRLZ AC,@STKPTR	;MINIMUN OPENING
00700			MOVEM AC,MINDST
00800			PUSHJ P,HEAD	;READ HAND
00900			MOVE AC,HAND
01000			MOVEM AC,SET
01100			MOVE TAC,[-0.10]
01200			MOVEM TAC,DIR	;CHANGE OF SET POINT PER JIFFY
01300			MOVSI AC,(4.0)
01400			MOVNM AC,RSET	;FINAL SET POINT -1 SO AS TO SQUEEZE
01500			TRO HCL
01600			JRST NXTJIF]
01700	BB:	PUSHJ P,HEAD
01800	IFE HANDWORK <
01900		JRST ER2
02000	>
02100	IFN TRACK,<SKIPN WALK>
02200		DATAO ARM,DATWD		;DRIVE HAND
02300		MOVE AC,HERR
02400		CAMG AC,[0.50]
02500		JRST NXTJIF		;IF ERROR LESS THAN 1 KEEP ON
02600	ER2:	TRZ HCL
02700		TDZ DATWD,HANDAT
02800		SKIPE SOTCH		;RESTORE TOUCH
02900		TRO STCH
03000		MOVE AC,MINDST
03100	IFE USER,<CAMG AC,HAND>
03200		JRST NEXT
03300		MOVEI 1,GRASER		;IF LESS THAN MINOPENING GIVE ERROR
03400		MOVEM 1,TRAJER
03500		POP P,1
03600		JRST  TOFF
03700	
     

00100	HEAD:	MOVEI K,HANDCHA
00200	IFE USER,<
00300		PUSHJ P,PREAD		;READ HAND CHANNEL
00400		LDB AC,SNUM
00500		ANDI DACVAL,7777
00600		ADDI AC,(DACVAL)	;ADD ALL THREE READINGS TOGETHER
00700		FSC AC,220
00800		FMPR AC,HSCALE
00900		FADR AC,HOFF
01000		MOVEM AC,HAND		;OPENING IN INCHES
01100	>
01200	IFN USER,<
01300		MOVE AC,HAND
01400		FADR AC,DIR
01500		SKIPG AC
01600		SETZ AC,
01700		MOVEM AC,HAND
01800	>
01900	IFN REPORT,<
02000		PUSH DATA,[<SIXBIT/HAND/>+1]
02100		PUSH DATA,HAND
02200	>
02300		SKIPN TAC,DIR
02400		JRST[	MOVE TAC,SET
02500			JRST GOTHER]
02600		FMPR TAC,TDF
02700		FADRB TAC,SET 		;INCREMENT SET POINT
02800		FSBR TAC,RSET	;NEGATIVE REMAINS TO GO
02900		FMPR TAC,DIR
03000		JUMPGE TAC,[	MOVE TAC,RSET	;GOT THERE
03100				MOVEM TAC,SET
03200				SETZM DIR
03300				JRST GOTHER]
03400		MOVE TAC,SET
     

00100	GOTHER:	FSBR AC,TAC		;HAND SERVO
00200		EXCH AC,HERR
00300		FSBR AC,HERR
00400		FMPR AC,KVH
00500		MOVN TAC,HERR
00600		FMPR TAC,KEH
00700		FADR AC,TAC
00800		TDO DATWD,[HANDAT:XWD 4000,60]
00900		JUMPGE AC,.+2
01000		TRZ DATWD,40
01100		MOVM AC,AC
01200		FIX AC,211000
01300		CAILE AC,776000
01400		MOVEI AC,776000
01500		TRC AC,400000
01600		HRLI AC,6
01700	IFN DEB<
01800		MOVEM AC,HANDAW
01900	>
02000	IFN TRACK,<SKIPN WALK>
02100		DATAO WIDTH,AC
02200		POPJ P,
02300	HSCALE:	1.32
02400	HOFF:	-0.81
02500	DIR:	0			;CHANGE OF SETPOINT PER JIFFY
02600	SET:	0			;DYNAMIC SET POINT
02700	RSET:	0			;FINAL SET POINT
02800	MINDST:	0			;MIN OPENING FOR CLOSE
02900	HERR:	0			;HAND POSITION ERROR
03000	KEH:	5.0			;ERROR GAIN
03100	KVH:	10.0			;VELOCITY GAIN
03200	IFN DEB<
03300	HANDAW:	0
03400	>
03500	
     

00100	PLACE:				;PLACE HAND ON TABLE
00200		TRNN DROP		;ONLY COME HERE ONCE
00300		JRST[	TRO DROP+RUN+VZERO
00400			MOVEI 1,=360
00500			MOVEM 1,COUNT
00600			HRRE 1,@STKPTR
00700			ADDI 1,(CBUF)
00800			HRLI 1,(1)
00900			HRRI 1,DELTH
01000			BLT 1,DELTH+5	;CHANGE OF THETA PER JIFFY
01100			MOVEI 1,=12
01200			MOVEM 1,HCNT	;DON'T STOP FOR THE FIRST 12 JIFFIES
01300			MOVE DATWD,[770000252502]
01400			HRRZM DATWD,FBI
01500			JRST NXTJIF]
01600		SOSL HCNT
01700		JRST NXTJIF
01800	IFN USER,<JRST PLACED>
01900	EXL:	MOVM AC,ET0+1
02000		CAML AC,PLER
02100		JRST PLACED
02200		JRST NXTJIF
02300	PLACED:	SETZM FUNCT
02400		JRST RUDONE
02500	PLER:	0.6
02600	
     

00100	NUDGE:	HRRE TAC,@STKPTR
00200		ADDI TAC,5(CBUF)
00300		MOVEI I,5
00400	NUL1:	MOVE AC,(TAC)
00500		MOVEM AC,DELTH(I)
00600		TRNE NSET
00700		JRST[	FADRM AC,TFF(I)
00800			MOVN AC,AC
00900			FADRM AC,DTH(I)
01000			JRST .+1]
01100		SOJ TAC,
01200		SOJGE I,NUL1
01300		TRZ NSET
01400		HRRE 1,@STKPTR
01500		ADDI 1,6(CBUF)
01600		PUSHJ P,UPDC
01700		HRRE 1,@STKPTR
01800		ADDI 1,6(CBUF)
01900		MOVE 2,7(1)
02000		ASH 2,16
02100		MOVEM 2,NTICKS
02200		ASH 2,-15
02300		ADDI 2,=60
02400		MOVEM 2,COUNT
02500		TRO INCREM+RUN+VZERO
02600		SETZM TICKS
02700		TRZE BOTH
02800		JRST[	AOS AC,STKPTR
02900			HLRE AC,(AC)
03000			MOVEM AC,FUNCT
03100			JRST .+2]
03200		SETZM FUNCT
03300		JRST NXTJIF
03400	
03500	
03600	STOP:	HRRE 1,@STKPTR
03700		ADDI 1,(CBUF)
03800		HRLI 1,(1)
03900		HRRI 1,STQ
04000		BLT 1,STQ+5
04100		MOVEI I,5
04200		SETZ AC,
04300	DSTQ:	MOVE TAC,STQ(I)
04400		FDVR TAC,F0(I)
04500		MOVM MQ,TAC
04600		CAMGE MQ,[0.2]
04700		SETZB TAC,STQ(I)
04800		MOVEM TAC,STQ(I)
04900		FMPR TAC,TAC
05000		FADR AC,TAC
05100		SOJGE I,DSTQ
05200		MOVEM AC,SDTQ
05300		SETZM ASTPP
05400		TRO STP
05500		JRST NEXT
05600	
05700	TOOL:	TRNN HCL
05800		JRST[	HRRE TAC,@STKPTR
05850			MOVM AC,TAC
05875			CAIL AC,100
05900			MOVEI AC,77
06000			JUMPGE TAC,TDIP
06100			TRC AC,177
06200		TDIP:	TRO AC,200
06250			HRRM AC,TDAT
06300			TRO HCL
06400			JRST .+1]
06410		SKIPG COUNT
06420		JRST[	SETZM TDAT
06460			DATAO DEVT,TDAT
06470			TRZ HCL
06480			JRST NEXT]
06500		DATAO DEVT,TDAT
06600		JRST NXTJIF
06700	TDAT:	0
06800	
     

00100	PATH:	TRO RUN+VZERO
00200		AOS DOING	;INCREASE TRAJECTORY NUMBER
00300		HRRE TAC,@STKPTR
00400		ADDI TAC,(CBUF)
00500		HRRZ AC,(TAC)
00600		ASH AC,16
00700		MOVEM AC,NTICKS	;RUN TIME
00800		MOVEI AC,=1800
00900		MOVEM AC,COUNT
01000		SETZM LOOP
01100		MOVE TAC,[XWD LOOP,LOOP+1]
01200		BLT TAC,LOOP+9
01300		MOVEI I,5
01400		HRRE K,@STKPTR
01500		ADDI K,34
01600	SUL:	SUBI K,4
01700		HRLZM K,TJ(I)
01800		HRLZM K,TN(I)
01900		MOVEI TAC,TJ(I)
02000		MOVEM TAC,TP(I)
02100		SETZM DTH(I)
02200		SOJGE I,SUL
02300		SETZM ETIME
02400		PUSHJ P,EVAL
02500		TRZ INCREM
02600		MOVEI I,5
02700	MOVBK:	MOVE AC,TH(I)
02800		MOVEM AC,T0(I)
02900		FSBR AC,TFF(I)
03000		CAIN I,5
03100		JRST[	MOVSI MQ,(180.0)
03200			CAML AC,MQ
03300			JRST[SETROT:FSC MQ,1
03400				MOVN MQ,MQ
03500				FADRM MQ,TH+5
03600				FADRM MQ,ROT6
03700				JRST MOVBK]
03800			MOVN MQ,MQ
03900			CAMG AC,MQ
04000			JRST SETROT
04100			JRST ADDTF]
04200	ADDTF:	MOVEM AC,DTH(I)
04300		MOVN AC,AC
04400		FADRM AC,DELTH(I)
04500		SETZM TD(I)
04600		SOJGE I,MOVBK
04700		SETZM TICKS
04800		TRZE BOTH
04900		JRST[	AOS AC,STKPTR
05000			HLRE AC,(AC)
05100			MOVEM AC,FUNCT
05200			JRST .+2]
05300		SETZM FUNCT
05400		JRST NXTJIF
05500	
     

00100	SAVE:	HRRE K,@STKPTR
00200		ADDI K,(CBUF)
00300		MOVE TAC,(K)
00400		JUMPLE TAC,.+2
00500		CAILE TAC,12
00600		JRST[	MOVEI TAC,SAVERR
00700			MOVEM TAC,TRAJER
00800			JRST TOFF]
00900		IMULI TAC,3
01000		ADDI TAC,DTHS
01100		MOVEI J,2
01200	SAL1:	MOVEI I,5
01300		SOJ TAC,
01400		SETZ AC,
01500	SAL2:	AOJ K,
01600		MOVE MQ,DTH(I)
01700		FMPR MQ,(K)
01800		FADR AC,MQ
01900		SOJGE I,SAL2
02000		MOVEM AC,(TAC)
02100		SOJGE J,SAL1
02200		JRST NEXT
02300	
02400	RESTORE:HRRE K,@STKPTR
02500		ADDI K,(CBUF)
02600		MOVE TAC,(K)
02700		JUMPLE TAC,.+2
02800		CAILE TAC,12
02900		JRST[	MOVEI TAC,SAVERR
03000			MOVEM TAC,TRAJER
03100			JRST TOFF]
03200		IMULI TAC,3
03300		ADDI TAC,DTHS-1
03400		ADDI K,22
03500		MOVEI I,5
03600	REL1:	MOVE AC,(TAC)
03700		FMPR AC,(K)
03800		MOVE MQ,-1(TAC)
03900		FMPR MQ,-1(K)
04000		FADR AC,MQ
04100		MOVE MQ,-2(TAC)
04200		FMPR MQ,-2(K)
04300		FADR AC,MQ
04400		FADRM AC,DDTH(I)
04500		SUBI K,3
04600		SOJGE I,REL1
04700		JRST NEXT
04800	
04900	TIMFAC: 0.3
05000		0.6
05100		3.0
05200		0.3
05300		0.3
05400		0.2
05500	
05600	SET.ARM:HRRE I,@STKPTR
05700		ADDI I,(CBUF)
05800		HRRE AC,(I)
05900		SOJL AC,.+2
06000		CAIL AC,11
06100		JRST[	MOVEI TAC,SAVERR
06200			MOVEM TAC,TRAJER
06300			JRST TOFF]
06400		IMULI AC,3
06500		HRRI TAC,DTHS(AC)
06600		HRRZI MQ,2(TAC)
06700		HRLI TAC,1(I)
06800		BLT TAC,(MQ)
06900		JRST NEXT
07000	
07100	SLAVE:	MOVEI K,15B23
07200		MOVEI I,3
07300	SLRP:	PUSHJ P,PREAD
07400		LDB AC,SNUM
07500		SUBI AC,4000
07600		MOVEM AC,POT(I)
07700		SOJGE I,SLRP
07800		TRNN HCL
07900		JRST[	TRO RUN+VZERO
08000			MOVE DATWD,[770000252502]
08100			HRRZM DATWD,FBI
08200			TRO HCL
08300			MOVEI AC,=6000
08400			MOVEM AC,COUNT
08500			MOVEI I,3
08600		SLZL:	MOVE AC,POT(I)
08700			MOVEM AC,POTZ(I)
08800			SOJGE I,SLZL
08900			JRST .+1]
09000		MOVEI I,3
09100	SLCH:	MOVE AC,POT(I)
09200		SUB AC,POTZ(I)
09300		JUMPGE AC,[SUBI AC,400
09400			JUMPGE AC,SLST
09500			JRST SLZA]
09600		ADDI AC,400
09700		JUMPL AC,SLST
09800	SLZA:	SETZ AC,
09900	SLST:	FSC AC,213
10000		MOVEM AC,POT(I)
10100		SOJGE I,SLCH
10200		SKIPE POT+3
10300		JRST[	TRZ HCL
10400			TRO FINAL
10500			SETZM FUNCT
10600			JRST NXTJIF]
10700		HRRE K,@STKPTR
10800		ADDI K,21(CBUF)
10900		MOVEI I,5
11000	SLL2:	MOVE AC,POT+2
11100		FMPR AC,(K)
11200		MOVE MQ,POT+1
11300		FMPR MQ,-1(K)
11400		FADR AC,MQ
11500		MOVE MQ,POT
11600		FMPR MQ,-2(K)
11700		FADR AC,MQ
11800		FMPR AC,TDF
11900		FADRM AC,DTH(I)
12000		SUBI K,3
12100		SOJGE I,SLL2
12200		JRST NXTJIF
12300	POT:	BLOCK 4
12400	POTZ:	BLOCK 4
12500	
     

00100	CENTER:	TRNN HCL
00200		JRST[	TRO HCL
00300			MOVEI TAC,=600
00400			MOVEM TAC,COUNT
00500			MOVSI AC,(4.0)
00600			MOVNM AC,RSET
00700			PUSHJ P,HEAD
00800			MOVE AC,SET
00900			TRZ STCH
01000			MOVE TAC,[-0.02]
01100			MOVEM TAC,DIR
01200			JRST NXTJIF]
01300		PUSHJ P,HEAD
01400	IFE HANDWORK,<JRST ER2>
01500		DATAO ARM,DATWD
01600		TRNN DROP
01700		JRST[	MOVEI I,1
01800		CFT:	MOVE AC,OBS(I)
01900			JUMPG AC,[SETZM TOT
02000				SKIPN I
02100				AOS TOT
02200				TRO DROP+RUN+VZERO
02300				MOVE TAC,[-0.01]
02400				MOVEM TAC,DIR
02500				HRRE TAC,@STKPTR
02600				ADDI TAC,(CBUF)
02700				MOVE AC,(TAC)
02800				MOVEM AC,MINDST
02900				AOJ TAC,
03000				MOVEI I,DELTH
03100			OT:	MOVE AC,(TAC)
03200				FMPR AC,[0.005]
03300				SKIPN TOT
03400				MOVNS AC
03500				MOVEM AC,(I)
03600				AOJ TAC,
03700				CAIGE I,DELTH+5
03800				AOJA I,OT
03900				MOVE TAC,[XWD 770000, 252500]
04000				HRRZM TAC,FBI
04100				IOR DATWD,TAC
04200				MOVSI AC,(1.0)
04300				MOVEM AC,TDF
04400				MOVEI I,4
04500			GETGO:	PUSHJ P,NXTH
04600				SOJGE I,GETGO
04700				JRST NXTJIF]
04800			SOJGE I,CFT
04900			JRST NXTJIF]
05000		MOVE TAC,TOT
05100		SKIPG OBS(TAC)
05200		JRST NXTJIF
05300		TRZ DROP+RUN+FINAL
05400		PUSHJ P,SETSET
05500		TDZ DATWD,[XWD 770000,252500]
05600		MOVE TAC,DIR
05700		FSC TAC,3
05800		MOVEM TAC,DIR
05900		MOVEI TAC,2
06000		MOVEM TAC,FUNCT
06100		JRST NXTJIF]
06200	TOT:	0
06300	
06400	WOBBLE:	HRLZ AC,@STKPTR
06500		MOVEM AC,WOBMAG
06600		MOVEI AC,1
06700		MOVEM AC,WOBCNT+2
06800		MOVEM AC,WOBCNT+1
06900		MOVEI AC,6
07000		MOVEM AC,WOBCNT
07100		MOVN AC,WOBMAG
07200		FADRM AC,DTH+3
07300		TRO WOB
07400		JRST NEXT
07500	WOBMAG:	0
07600	WOBCNT:	BLOCK 3
07700	SIN:	 0.0
07800		 0.30902
07900		 0.58779
08000		 0.80902
08100		 0.95106
08200		 1.0
08300		 0.95106
08400		 0.80902
08500		 0.58779
08600		 0.30902
08700		 0.0
08800		-0.30902
08900		-0.58779
09000		-0.80902
09100		-0.95106
09200		-1.0
09300		-0.95106
09400		-0.80902
09500		-0.58779
09600		-0.30902
     

00100	SEARCH:	SETZM XSEL
00200		SETZM SCOUNT
00300		SETZM TCOUNT
00400		HRRE 1,@STKPTR
00500		ADDI 1,(CBUF)
00600		HRLI 1,(1)
00700		HRRI 1,XDEL
00800		BLT 1,YDEL+5
00900		SETZM SDTH
01000		MOVE AC,[XWD SDTH,SDTH+1]
01100		BLT AC,SDTH+5
01200		JRST NEXT
01300	
01400	AOJI:	MOVEI I,5
01500		MOVE K,SCOUNT
01600		SOSG J,TCOUNT
01700		JRST[	SKIPN XSEL
01800			AOS K,SCOUNT
01900			SETCMM XSEL
02000			MOVEI J,(K)
02100			MOVEM J,TCOUNT
02200			JRST .+1]
02300		SKIPE XSEL
02400		JRST[IX:MOVE AC,XDEL(I)
02500			TRNN K,1
02600			MOVN AC,AC
02700			FADRB AC,SDTH(I)
02800			FADRM AC,DDTH(I)
02900			SOJGE I,IX
03000			JRST NJ]
03100	IY:	MOVE AC,YDEL(I)
03200		TRNN K,1
03300		MOVN AC,AC
03400		FADRB AC,SDTH(I)
03500		FADRM AC,DDTH(I)
03600		SOJGE I,IY
03700	NJ:	HRRE TAC,@STKPTR
03800		ADD TAC,STKPTR
03900		SOJ TAC,
04000		HRRM TAC,STKPTR
04100		JRST NEXT
04200	
04300	TCOUNT:	0
04400	SCOUNT:	0
04500	XSEL:	0
04600	XDEL:	BLOCK 6
04700	YDEL:	BLOCK 6
04800	SDTH:	BLOCK 6
04900	
05000	HOME:	HRRE TAC,@STKPTR
05100		ADDI TAC,5(CBUF)
05200		MOVEI I,5
05300	HLN:	MOVE AC,(TAC)
05400		FADR AC,6(TAC)
05500		MOVEM AC,TFF(I)
05600		FSBR AC,T0(I)
05700		MOVNM AC,DTH(I)
05800		FADR AC,DDTH(I)
05900		SETZM DDTH(I)
06000		MOVEM AC,DELTH(I)
06100		SOJ TAC,
06200		SOJGE I,HLN
06300		MOVEI I,5
06400		MOVE TAC,DELTH+5
06500		CAML TAC,[180.0]
06600		JRST[	FSBR TAC,[360.0]
06700			JRST .-1]
06800		CAMGE TAC,[-180.0]
06900		JRST[	FADR TAC,[360.0]
07000			JRST .-1]
07100		MOVEM TAC,DELTH+5
07200		HRRE AC,@STKPTR
07300		ADDI AC,=12(CBUF)
07400		PUSHJ P,UPDC
07500		HRRE AC,@STKPTR
07600		ADDI AC,=12(CBUF)
07700		MOVE TAC,7(AC)
07800		ASH TAC,16
07900		MOVEM TAC,NTICKS
08000		MOVEI I,5
08100		SETZ MQ,
08200	HNCCA:	MOVM TAC1,DELTH(I)
08300		FMPR TAC1,TIMFAC(I)
08400		CAML TAC1,MQ
08500		MOVE MQ,TAC1
08600		SOJGE I,HNCCA
08700		FADR MQ,[20.0]
08800		FIX MQ,215000
08900		CAML MQ,NTICKS
09000		MOVEM MQ,NTICKS
09100		ASH MQ,-15
09200		ADDI MQ,=60
09300		MOVEM MQ,COUNT
09400		TRO INCREM+RUN+VZERO+NSET
09500		SETZM TICKS
09600		MOVE AC,STKPTR
09700		TRNE BOTH
09800		AOJ AC,
09900		HLRZ AC,1(AC)
10000		CAIE AC,5
10100		TRZ NSET
10200		TRZE BOTH
10300		JRST[	AOS AC,STKPTR
10400			HLRE AC,(AC)
10500			MOVEM AC,FUNCT
10600			JRST .+2]
10700		SETZM FUNCT
10800		JRST NXTJIF
10900	
     

00100	REFLEX:	MOVEI I,1
00200		MOVEI K,65B23
00300	IFN USER,<POPJ P,>
00400	REX:	PUSHJ P,PREAD
00500		LDB AC,[POINT 12,DACVAL,11]
00600		ADD AC,REF(I)
00700		MOVEM AC,OBS(I)
00800	RMOR:	SOJGE I,REX
00900		TRNN STCH
01000		POPJ P,
01100		MOVEI I,1
01200	SIT:	MOVE AC,OBS(I)
01300		JUMPG AC,[	LSH I,3
01400				IORI I,TOUCH
01500				MOVEM I,TRAJER
01600				POP P,I
01700				JRST TOFF]
01800		SOJGE I,SIT
01900		POPJ P,
02000	
02100	REF:	-1000
02200		-1000
02300		BLOCK 4
02400	OBS:	BLOCK 2
02500	SOTCHS:	0
02600	
02700	SETCH:	MOVE AC,SOTCH
02800		MOVEM AC,SOTCHS
02900		HRLE AC,@STKPTR
03000		MOVEM AC,SOTCH
03100		JUMPE AC,NEXT
03200		TRO STCH
03300		JRST NEXT
03400	
     

00100		XLIST
00200		LIT
00300		LIST
00400		END START